perm filename SPOT.ADV[AP,DBL] blob sn#111759 filedate 1974-07-16 generic text, type T, neo UTF8
00100	There are many simple extensions to the SPOT program. One main one is to
00200	add a graph-matcher:  after the scen is read in, when it is compared to a
00300	stored scene, the objects are not only renamed as necessary, they are
00400	permuted as necessary until a match is found or all permutations have been
00500	exhausted.  A second one involves backup. Currently, SPOT simply undoes
00600	any transfer found later to be incorrect; it does not then do any of the
00700	(then-existing) alternative transfers, it simply stays where it is.  Thus
00800	it often errs, makes a false fixup (which works on this one particular case
00900	only,) errs again, undoes the false fixup, and thus is back where it started
01000	(with respect to this particular feature).  A better system should tag each
01100	new transfer into the MUST or MUSNT list by appending the list of its alter-
01200	natives.  After finding a MUST entry which is actually only a MAY, SPOT can
01300	stick it back into MAY and find some one of its alternatives which is still
01400	in the ALWAYS-WAS category (or, if it doesnt't exist, the MAY list) and
01500	transfer it to the MUST list.  Similarly, and incorrect MUSNT entry can
01600	be transferred to MAY, and one of its alternatives raised to MUSNT status,
01700	so long as that alternative doesn't appear on any other list.
01800	
01900	With these two changes, SPOT would be as good as Winston's system. Winston
02000	in fact gives the graph-matcher details, and mentions that it is too good
02100	an algorithm to have any interest to AI researchers except as a unit. There
02200	are many subtle variations on the CF theme, and they have been mentioned
02300	in the BEINGS handout and in the second PUP5 talk writeup (under CONCEPT
02400	FORMATION knowledge). These decisions involve constraints on the task,
02500	which affect what algorithm the CF program can employ.
02600	
02700	A great deal of work remains to be done on the dialog.  There are serious
02800	problems which have not been important ever before: it is reasonable to
02900	demand that the user be "on top of" a dialog which takes five minutes and
03000	runs one page; it is foolhardy if the dialog takes twelve hours and is
03100	hundreds of pages long. Recovering from user error is nontrivial, since
03200	the system should only consult the user when it has run aground.  There is
03300	a problem of how to refer to something that was mentioned once several hours
03400	ago: PUP5 currently demands it by name, which means naming everything and
03500	remenbering all the names of the things you need. This is wasteful (half
03600	the dialog is naming, and only a few of the names are ever mentioned again)
03700	and should be replaced by a facility for referncing objects by describing
03800	what they are, what they do, roughly when and where they were created, etc.
03900	Although this seems plausible (but tedious) with a being-oriented system,
04000	it does not seem at all feasible with a purely rule-based one. Perhaps the
04100	whole idea of gradually building the right program is a poor approach. We
04200	might want the system to slap together some rough approximation to what the
04300	user wants, then let him use it for a while, then process his comments and
04400	modify the program. This iterative process should converge to the right
04500	program quickly, and it is probably desirable because the typical
04600	user doesn't really know what he wants until he sees why he doesn't want
04700	what he initially told you he wanted. Also, even if he is satisfied, he
04800	may later want to modify the program in some way after using it for a
04900	while.  Notice that I am not advocating a system which reads in just
05000	any program and some comments and fixes up the program: it must be a
05100	program (with all the states of the relevant data structures saved as
05200	cmments, perhaps) which the system itself has written. 
05300	
05400	The match to existing scenes should be by picking the closest one, not 
05500	(as cureently) by picking the first one which passes the criteria.
05600	Full Boolean concepts, involving OR and NOT, should be handled.
05700	
05800	One totally new area would be to include semantic world knowledge and to
05900	tell the program what the structure was used for. Then the system could
06000	reject implausible generalizations, hypothesize that certain MAY obser-
06100	vations are really MUST ones, predict some MUSNT relations, and so on.